package com.syx.migration.utils;


import java.util.*;

/**
 * @author Administrator
 * @date 2024/4/7 14:05
 * @description: 国土法工具类
 */
public class CnBookTypeUtils {

    // 五大类分法
    private static final Map<String,String> CN_TOTAL_TYPE = new HashMap<>();

    // 二十二大类分法
    private static final Map<String ,String> CN_ITEM_TYPE = new HashMap<>();

    private static final Map<String, String> EBOOK_TYPE = new HashMap<>();

    // 禁用分类号
    private static final List<String> DISABLED_TYPE = Arrays.asList("L", "M", "W", "Y");

    static {
        CN_TOTAL_TYPE.put("A", "马、列、毛、邓");
        CN_TOTAL_TYPE.put("B", "哲学");
        CN_TOTAL_TYPE.put("C", "社会科学");
        CN_TOTAL_TYPE.put("N", "自然科学");
        CN_TOTAL_TYPE.put("Z", "综合性图书");



        CN_ITEM_TYPE.put("A", "马克思主义、列宁主义、毛泽东思想、邓小平理论");
        CN_ITEM_TYPE.put("B", "哲学、宗教");

        CN_ITEM_TYPE.put("C", "社会科学总论");
        CN_ITEM_TYPE.put("D", "政治、法律");
        CN_ITEM_TYPE.put("E", "军事");
        CN_ITEM_TYPE.put("F", "经济");
        CN_ITEM_TYPE.put("G", "文化、科学、教育、体育");
        CN_ITEM_TYPE.put("H", "语言、文字");
        CN_ITEM_TYPE.put("I", "文学");
        CN_ITEM_TYPE.put("J", "艺术");
        CN_ITEM_TYPE.put("K", "历史、地理");

        CN_ITEM_TYPE.put("N", "社会科学总论");
        CN_ITEM_TYPE.put("O", "数理科学和化学");
        CN_ITEM_TYPE.put("P", "天文学、地球科学");
        CN_ITEM_TYPE.put("Q", "生物科学");
        CN_ITEM_TYPE.put("R", "医药、卫生");
        CN_ITEM_TYPE.put("S", "农业科学");
        CN_ITEM_TYPE.put("T", "工业技术");
        CN_ITEM_TYPE.put("U", "交通运输");
        CN_ITEM_TYPE.put("V", "航空航天");
        CN_ITEM_TYPE.put("X", "环境科学、安全科学");

        CN_ITEM_TYPE.put("Z", "综合性图书");


        EBOOK_TYPE.put("1", "A");
        EBOOK_TYPE.put("2", "B");
        EBOOK_TYPE.put("3", "C");
        EBOOK_TYPE.put("4", "D");
        EBOOK_TYPE.put("5", "E");
        EBOOK_TYPE.put("6", "F");
        EBOOK_TYPE.put("7", "G");
        EBOOK_TYPE.put("8", "H");
        EBOOK_TYPE.put("9", "I");
        EBOOK_TYPE.put("10", "J");
        EBOOK_TYPE.put("11", "K");
        EBOOK_TYPE.put("12", "N");
        EBOOK_TYPE.put("13", "O");
        EBOOK_TYPE.put("14", "P");
        EBOOK_TYPE.put("15", "Q");
        EBOOK_TYPE.put("16", "R");
        EBOOK_TYPE.put("17", "S");
        EBOOK_TYPE.put("18", "T");
        EBOOK_TYPE.put("19", "U");
        EBOOK_TYPE.put("20", "V");
        EBOOK_TYPE.put("21", "X");
        EBOOK_TYPE.put("22", "Z");

    }

    /**
     * 二十二大类转五大类
     */
    public static String item2Total(String itemType){
        if (itemType.equals("A") || itemType.equals("B") || itemType.equals("Z")){
            return itemType;
        }
        if (itemType.compareTo("C") >= 0 && itemType.compareTo("N") < 0){
            return "C";
        }
        return "N";
    }

    /**
     * 校验索书号规则
     */
    public static String getFirstType(String classifyNumber){
        // 获取第一个字符
        String firstChar = classifyNumber.substring(0, 1);
        char c = firstChar.charAt(0);
        return firstChar;
    }

    /**
     * 获取五大类
     */
    public static String getTotalType(String classifyNumber){
        return item2Total(getFirstType(classifyNumber));
    }

    public static String getClassifyOfEbook(String numType){
        String s = EBOOK_TYPE.get(numType);
        if (Objects.isNull(s) || s.isBlank()){
            s = "A";
        }
        return s;
    }

    /**
     * 获取二十二大类
     */
    public static String getItemType(String classifyNumber){
        return getFirstType(classifyNumber);
    }

    /**
     * 获取二十二大类value
     */
    public static String getItemValue(String key){
        return CN_ITEM_TYPE.get(key);
    }

    /**
     * 设置索书号
     */
     public static String resetCallNumber(String classifyNumber, String titleNumber, String diffNumber){
        String titlePrev = "/";
        String diffPrev = ":";
        String result = classifyNumber + titlePrev + titleNumber;
        if (Objects.isNull(diffNumber) || diffNumber.equals("")){
            result += diffPrev + diffNumber;
        }
        return result;
    }

}
